package cn.clq.system.listener;

import cn.clq.system.service.IPermissionScanService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
/**
 * @description: 自定义一个监听类，用来在项目初始化的时候，根据自定义的注解录入permission表数据
 * @param: null
 * @return:
 * @author clqlongbao
 * @date: 2022/6/23 10:06
 */
@WebListener//这句话是申明自定义的web监听器，被容器注册和使用
@Slf4j
public class PermissionScanInitListener implements ServletContextListener {
    //这里容器已经被初始化了，只是项目还没有启动，所以是可以注入的
    @Autowired
    private IPermissionScanService permissionScanService;
    
    //spring容器初始化结束之后被调用
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        //这里是使用匿名内部类实现Runnable
        new Thread(new Runnable() {
            @Override
            public void run() {
                log.info("权限初始化开始******************************************");
                permissionScanService.scanPermission();
                log.info("权限初始化结束******************************************");
            }
        }).start();
    }
}